/**
 * @author 吴迪
 * @argument 报文传输日志的panel
 * @version 1.0
 * @class monitoringView
 * @extends Ext.Panel
 * @createTime 2012-6-25
 */
Ext.ns('Ext.monitoringView');
Ext.monitoringView.monitoringViewPanel = Ext.extend(Ext.Panel, {
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);

		this.cm = new Ext.grid.ColumnModel( [ new Ext.grid.RowNumberer(), {
			header : 'id',
			hidden : true,
			dataIndex : 'id'
		}, {
			header : '传输日期',
			dataIndex : 'indb_time'
		}, {
			header : '文件路径',
			dataIndex : 'file_path'
		}, {
			header : '发送者',
			dataIndex : 'sender_id'
		}, {
			header : '重发时间',
			dataIndex : 'redend_time'
		}, {
			header : '收发标志',
			dataIndex : 'trans_type',
			renderer : function(value) {
				if (value == 'I') {
					return '接收';
				} else if (value == 'O')
					return '发送';
			}
		}, {
			header : '报文类型',
			dataIndex : 'message_type'
		}, {
			header : '传输状态',
			dataIndex : 'trans_status',
			renderer : function(value) {
				if (value == 'T') {
					
					return '传输成功';
				} else if (value == 'F')
					return '传输失败';
			}
		}, {
			header : '文件内容',
			renderer : function(value) {
				return "<a href=# onclick='javascript:return false;'>查看</a>"
			}
		}, {
			header : '重发报文',
			renderer : function(value,cellMeta,record,rowIndex,columnIndex,store) {
				var status = record.data['trans_status'];
				if(status == 'T'){
					return ''
				} else {
					return "<a href=# onclick='javascript:return false;'>重发</a>"
				}
			}
		} ]);
		this.store = new Ext.data.JsonStore(
				{
					url : 'monitoringView/queryForListByPage',
					root : 'root',
					totalProperty : 'totalProperty',
					fields : [ 'id', 'indb_time', 'file_path', 'sender_id',
							'redend_time', 'trans_status', 'trans_type',
							'message_type' ]
				});
		this.limit = 15;
		this.pagingBar = new Ext.PagingToolbar( {
			store : this.store,
			displayInfo : true,
			pageSize : this.limit,
			displayMsg : '显示从第{0}到第{1}记录,共有{2}条',
			emptyMsg : '没有数据',
			prevText : '上一页',
			nextText : '下一页',
			refreshText : '刷新',
			lastText : '最后页',
			firstText : '第一页',
			beforePageText : '当前页',
			afterPageText : '共{0}页'
		});

		this.startDate = new Ext.form.DateField( {
			name : 'startDate',
			format : 'Y-m-d',
			listeners : {
				'change' : function(field, newValue, oldValue) {
					this.endDate.setMinValue(newValue);
					this.endDate.validate();
				},
				scope : this
			}
		});
		this.endDate = new Ext.form.DateField( {
			name : 'endDate',
			format : 'Y-m-d',
			listeners : {
				'change' : function(field, newValue, oldValue) {
					this.startDate.setMaxValue(newValue);
					this.startDate.validate();
				},
				scope : this
			}
		});
		this.infoGridPanel = new Ext.grid.GridPanel( {
			flex : 1,
			cm : this.cm,
			title : '报文传输日志查询结果',
			frame : true,
			store : this.store,
			bbar : this.pagingBar,
			viewConfig : {
				forceFit : true
			},
			loadMask : {
				msg : '正在加载...'
			},
			listeners : {
				cellclick : function(grid, rowIndex, columnIndex) {
					this.ShowInfo(grid, rowIndex, columnIndex);
				},
				scope : this
			}
		});

		this.transferTypeStore = new Ext.data.SimpleStore( {
			data : [ [ '', '全部' ], [ 'O', '发送' ], [ 'I', '接收' ] ],
			fields : [ 'id', 'transType' ]
		});
		this.topSearchPanel = new Ext.form.FormPanel( {
			height : 150,
			title : '报文传输日志查询条件',
			layout : 'column',
			bodyStyle : 'padding:10px',
			width : '100%',
			frame : true,
			defaults : {
				xtype : 'container',
				autoEl : {},
				anchor : '100%',
				layout : 'form',
				labelWidth : 60,
				defaults : {
					anchor : '90%'
				}
			},
			buttons : [ {
				text : '查询',
				handler : this.QueryReportLogInfo,
				iconCls : 'btn-search',
				scope : this
			}, {
				text : '清空',
				handler : this.ClearReportLogInfo,
				iconCls : 'btn-reset',
				scope : this
			} ],
			items : [
					{
						columnWidth : 0.43,
						layout : 'form',
						border : false,
						baseCls : '',
						labelWidth : 80,
						items : [ {
							fieldLabel : '报文类型',
							name : 'message_type',
							xtype : 'combo',
							valueField : 'id',
							displayField : 'mesType',
							triggerAction : 'all',
							mode : 'local',
							editable : false,
							emptyText : '报文类型',
							store : new Ext.data.SimpleStore( {
								data : [ [ '', '全部' ] ],
								fields : [ 'id', 'mesType' ]
							}),
							anchor : '90%'
						}, {
							xtype : 'compositefield',
							fieldLabel : '传输时间',
							defaults : {
								flex : 1,
								xtype : 'container',
								autoEl : {},
								layout : 'form'
							},
							items : [ this.startDate, {
								xtype : 'label',
								text : '至',
								width : 15,
								style : 'height:15px;line-height:20px'
							}, this.endDate ]
						} ]
					},
					{
						columnWidth : 0.33,
						layout : 'form',
						border : false,
						labelWidth : 80,
						baseCls : '',
						items : [ {
							xtype : 'textfield',
							name : 'sender_id',
							fieldLabel : '发送者',
							anchor : '90%'
						}, {
							xtype : 'textfield',
							name : 'receiver_id',
							fieldLabel : '接收者',
							anchor : '90%'
						} ]
					},
					{
						columnWidth : 0.23,
						layout : 'form',
						border : false,
						labelWidth : 80,
						baseCls : '',
						items : [
								{
									fieldLabel : '传输类型',
									name : 'transfer_type',
									xtype : 'combo',
									valueField : 'id',
									displayField : 'transType',
									triggerAction : 'all',
									mode : 'local',
									editable : false,
									emptyText : '请选择',
									store : this.transferTypeStore,
									anchor : '90%'
								},
								{
									fieldLabel : '传输状态',
									name : 'trans_status',
									xtype : 'combo',
									valueField : 'id',
									displayField : 'transStat',
									triggerAction : 'all',
									mode : 'local',
									editable : false,
									emptyText : '请选择',
									store : new Ext.data.SimpleStore( {
										data : [ [ '', '全部' ], [ 'T', '传输成功' ],
												[ 'F', '传输失败' ] ],
										fields : [ 'id', 'transStat' ]
									}),
									anchor : '90%'
								} ]
					} ]
		});
		Ext.monitoringView.monitoringViewPanel.superclass.constructor.call(
				this, {
					layout : 'vbox',
					layoutConfig : {
						align : 'strech',
						pack : 'start'
					},
					frame : true,
					width : Ext.getCmp('frmPanel').getInnerWidth(),
					height : Ext.getCmp('frmPanel').getInnerHeight(),
					items : [ this.topSearchPanel, this.infoGridPanel ]
				});

	},

	// 查询按钮事件
	QueryReportLogInfo : function() {
		this.store.baseParams.messageType = this.topSearchPanel.find('name',
				'message_type')[0].getValue();
		this.store.baseParams.senderId = this.topSearchPanel.find('name',
				'sender_id')[0].getValue();
		this.store.baseParams.receiverId = this.topSearchPanel.find('name',
				'receiver_id')[0].getValue();
		this.store.baseParams.startDate = this.startDate.getRawValue();
		this.store.baseParams.endDate = this.endDate.getRawValue();
		this.store.baseParams.transferType = this.topSearchPanel.find('name',
				'transfer_type')[0].getValue();
		this.store.baseParams.transferStat = this.topSearchPanel.find('name',
				'trans_status')[0].getValue();

		this.store.load( {
			params : {
				start : 0,
				limit : 15
			}
		})
	},

	// 清空按钮事件
	ClearReportLogInfo : function() {
		this.topSearchPanel.getForm().reset();
	},

	// 查看xml文本信息
	ShowInfo : function(grid, rowIndex, columnIndex) {
		var rec = this.infoGridPanel.getSelectionModel().getSelected();
		var id = rec.get('id');
		var status = rec.get('trans_status');
		if (columnIndex == 9) {
			if (this.reportLogWin == null) {
				this.reportLogWin = new Ext.ReportLog.ReportLogWin()
			}
			this.reportLogWin.loadData(id);
			this.reportLogWin.show();
		}
		if (columnIndex == 10) {
			if(status == 'T'){
				return ;
			}
			
			Ext.Ajax.request( {
				url : 'monitoringView/reSendMessage',
				params : {
					id : id
				},
				waitMsg : '请求中',
				success : function(response, opts) {
					var result = Ext.util.JSON.decode(response.responseText);
					if (result.success) {
						Ext.Msg.alert('提示', '重发成功');
					} else {
						Ext.Msg.alert('提示', '重发失败');
					}
				},
				failure : function(response, opts) {
					Ext.Msg.alert('提示', '重发请求失败');
				},
				scope : this
			})
		}

	},

	// 将报文类型转为汉字
	renderMessageType : function(value) {

		if (value == 'vm')
			return '外网核放单报文';
		if (value == 'psd')
			return '指令报文';
		if (value == 'Gather')
			return '机场卡口报文';

		if (value == 'AZ0301')
			return '内网核放单报文';
		if (value == 'AZ6001')
			return '载运单报文';
		if (value == 'MT3201')
			return '运抵报告报文';
		if (value == 'MT5201')
			return '理货报告报文';
		if (value == 'AZ6002')
			return '货物实际库存报文';
		if (value == 'Unkonw')
			return '未知报文';
	}

});